/**
 * ProjectName:  mall-framework
 * FileName:  SpringContextUtil.java
 * PackageName:  com.cyou.mall.springext
 * Copyright (c) 2013, CYOU All Rights Reserved.
*/
package com.blx.utils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * 
* @ClassName: SpringContextUtil 
* @Description: TODO(这里用一句话描述这个类的作用) 
* @author wenlong.wang@corp.elong.cn 
* @date 2014年3月3日 下午6:00:18 
*
 */
public class SpringContextUtil implements ApplicationContextAware{

	/**
	 * spring上下文环境
	 */
	private static ApplicationContext applicationContext;

	// 下面的这个方法上加了@Override注解，原因是继承ApplicationContextAware接口是必须实现的方法
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
		SpringContextUtil.applicationContext = applicationContext;
	}

	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	public static Object getBean(String name) throws BeansException {
		return applicationContext.getBean(name);
	}
	public static <T> T getBean(Class<T> clazz) throws BeansException {
		return applicationContext.getBean(clazz);
	}

	public static Object getBean(String name, Class<?> requiredType)throws BeansException {
		return applicationContext.getBean(name, requiredType);
	}

	public static boolean containsBean(String name) {
		return applicationContext.containsBean(name);
	}

	public static boolean isSingleton(String name)throws NoSuchBeanDefinitionException {
		return applicationContext.isSingleton(name);
	}

	public static Class<?> getType(String name)throws NoSuchBeanDefinitionException {
		return applicationContext.getType(name);
	}

	public static String[] getAliases(String name)throws NoSuchBeanDefinitionException {
		return applicationContext.getAliases(name);
	}
}
